package org.feluma.sgci.controle;

import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
import org.feluma.sgci.dao.UsuarioDAO;
import org.feluma.sgci.entidade.Usuario;
import org.feluma.sgci.entidade.Perfil;
import org.feluma.sgci.util.Excecao;


public class UsuarioControle {
	
	public String listar(){
		try {
			int codEscola = Integer.parseInt(Transporte.request.getSession().getAttribute("codEscola").toString());
			UsuarioDAO dao = new UsuarioDAO();
			ArrayList<Usuario> listaUsuario = dao.listar(codEscola);
			Transporte.request.setAttribute("listaUsuario", listaUsuario);
		} catch (Excecao e) {
			e.printStackTrace();
		}
		return "usuario.jsp";
	}

	public String cadastrar(){
		String paginaRetorno;
		int codigoPerfil = Integer.parseInt(Transporte.getRequest().getParameter("perfil"));
		int codEscola = Integer.parseInt(Transporte.getRequest().getParameter("escola"));
		String nome = Transporte.getRequest().getParameter("nome");
		String login = Transporte.getRequest().getParameter("login");
		String senha = Transporte.getRequest().getParameter("senha");
		String email = Transporte.getRequest().getParameter("email");
		
		Perfil perfil = new Perfil(codigoPerfil,null);
		Usuario usuario = new Usuario( perfil, nome, login, senha, codEscola,email);		
		try {
			UsuarioDAO dao = new UsuarioDAO();
			if(dao.verificar(usuario) == 0){
				dao.cadastrar(usuario);
				paginaRetorno = this.listar();
			}else{
				paginaRetorno = "erro/erro_usuario.jsp?erro=cadastrar";
			}
		} catch (Excecao e) {
			paginaRetorno = "erro/erro_usuario.jsp?erro=banco";
		}
		return paginaRetorno;
	}

	public String excluir(){
		int codigo =  Integer.parseInt(Transporte.getRequest().getParameter("codigo"));
		String paginaRetorno;
		try {
			UsuarioDAO dao = new UsuarioDAO();
			dao.excluir(codigo);
			paginaRetorno = this.listar();
		} catch (Excecao e) {
			paginaRetorno = "erro/erro_usuario.jsp?erro=banco";
		} catch (SQLException e) {
			paginaRetorno = "erro/erro_usuario.jsp?erro=excluir";
		}
		return paginaRetorno;
	}

	public String procurar(){
		int codigo = Integer.parseInt(Transporte.getRequest().getParameter("codigo"));
		try {
			UsuarioDAO dao = new UsuarioDAO();
			Usuario usuario = dao.procurar(codigo);
			Transporte.request.setAttribute("usuario", usuario);
		} catch (Excecao e) {
			e.printStackTrace();
		}
		return "alterarUsuario.jsp";
	}
	
	public String gravar(){
		String paginaRetorno;
		int meusDados = Integer.parseInt(Transporte.getRequest().getParameter("usuarioLogado"));
		int codigo  = Integer.parseInt(Transporte.getRequest().getParameter("codigo"));
		int codPerfil =  Integer.parseInt(Transporte.getRequest().getParameter("perfil"));
		int codEscola =  Integer.parseInt(Transporte.getRequest().getParameter("escola"));
		String nome = Transporte.getRequest().getParameter("nome");
		String login = Transporte.getRequest().getParameter("login");
		String senha = Transporte.getRequest().getParameter("senha");
		String email = Transporte.getRequest().getParameter("email");
		Perfil perfil = new Perfil(codPerfil);
		try {
			Usuario usuario = new Usuario(codigo, perfil, nome, login, senha, codEscola, email);
			UsuarioDAO dao = new UsuarioDAO();
			if(codPerfil==1 || codPerfil== meusDados){
				dao.gravar(usuario);
				paginaRetorno = this.listar();				
			}else{
				paginaRetorno = "erro/erro_usuario.jsp?erro=cadastrar";
			}
		} catch (Excecao e) {
			paginaRetorno = "erro/erro_usuario.jsp?erro=banco";
		}
		return paginaRetorno;
	}

	public String logar(){
		String login = Transporte.getRequest().getParameter("login");
		String senha = Transporte.getRequest().getParameter("senha");
		Usuario usuario = new Usuario(login, senha);
		String paginaRetorno;
		try {
			UsuarioDAO dao = new UsuarioDAO();
			usuario = dao.logar(usuario);
			if(usuario.getCodigo() != 0){
				HttpSession session = Transporte.getRequest().getSession(true);
				session.setAttribute("perfil", usuario.getPerfil().getDescricao());
				session.setAttribute("codEscola", usuario.getCodEscola());
                session.setAttribute("codUsuario", usuario.getCodigo());
                session.setAttribute("nome", usuario.getNome());
                paginaRetorno = "principal.jsp";
			}else{
				paginaRetorno = "index.jsp?erro=1";
			}
		} catch (Excecao e) {
			paginaRetorno = "erro/erro_login.jsp";
		}
		return paginaRetorno;
	}
	
	public String pesquisar(){
		String nome = Transporte.getRequest().getParameter("nome");
		int codEscola =Integer.parseInt(Transporte.getRequest().getParameter("codEscola"));
		try {
			UsuarioDAO dao = new UsuarioDAO();
			ArrayList<Usuario> listaUsuario = dao.pesquisar(nome,codEscola);
			Transporte.request.setAttribute("listaUsuario", listaUsuario);
		} catch (Excecao e) {
			e.printStackTrace();
		}
		return "usuario.jsp";
	}
		
}
